
module.exports.TITLE_ESCROW_ABI = [
    {
        inputs: [
            {
                internalType: "contract ERC721",
                name: "_tokenRegistry",
                type: "address",
            },
            {
                internalType: "address",
                name: "_beneficiary",
                type: "address",
            },
            {
                internalType: "address",
                name: "_holder",
                type: "address",
            },
            {
                internalType: "address",
                name: "_titleEscrowFactoryAddress",
                type: "address",
            },
        ],
        payable: false,
        stateMutability: "nonpayable",
        type: "constructor",
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: "address",
                name: "previousHolder",
                type: "address",
            },
            {
                indexed: true,
                internalType: "address",
                name: "newHolder",
                type: "address",
            },
        ],
        name: "HolderChanged",
        type: "event",
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: "address",
                name: "_tokenRegistry",
                type: "address",
            },
            {
                indexed: true,
                internalType: "address",
                name: "_to",
                type: "address",
            },
            {
                indexed: true,
                internalType: "uint256",
                name: "_id",
                type: "uint256",
            },
        ],
        name: "TitleCeded",
        type: "event",
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: "address",
                name: "_tokenRegistry",
                type: "address",
            },
            {
                indexed: true,
                internalType: "address",
                name: "_from",
                type: "address",
            },
            {
                indexed: true,
                internalType: "uint256",
                name: "_id",
                type: "uint256",
            },
        ],
        name: "TitleReceived",
        type: "event",
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: "uint256",
                name: "_tokenid",
                type: "uint256",
            },
            {
                indexed: true,
                internalType: "address",
                name: "_from",
                type: "address",
            },
            {
                indexed: true,
                internalType: "address",
                name: "_to",
                type: "address",
            },
        ],
        name: "TransferOwnerApproval",
        type: "event",
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: "address",
                name: "newBeneficiary",
                type: "address",
            },
            {
                indexed: true,
                internalType: "address",
                name: "newHolder",
                type: "address",
            },
        ],
        name: "TransferTitleEscrowApproval",
        type: "event",
    },
    {
        constant: true,
        inputs: [],
        name: "_tokenId",
        outputs: [
            {
                internalType: "uint256",
                name: "",
                type: "uint256",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: true,
        inputs: [],
        name: "approvedBeneficiary",
        outputs: [
            {
                internalType: "address",
                name: "",
                type: "address",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: true,
        inputs: [],
        name: "approvedHolder",
        outputs: [
            {
                internalType: "address",
                name: "",
                type: "address",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: true,
        inputs: [],
        name: "approvedOwner",
        outputs: [
            {
                internalType: "address",
                name: "",
                type: "address",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: true,
        inputs: [],
        name: "beneficiary",
        outputs: [
            {
                internalType: "address",
                name: "",
                type: "address",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: true,
        inputs: [],
        name: "holder",
        outputs: [
            {
                internalType: "address",
                name: "",
                type: "address",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: true,
        inputs: [],
        name: "status",
        outputs: [
            {
                internalType: "enum TitleEscrow.StatusTypes",
                name: "",
                type: "uint8",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: true,
        inputs: [
            {
                internalType: "bytes4",
                name: "interfaceId",
                type: "bytes4",
            },
        ],
        name: "supportsInterface",
        outputs: [
            {
                internalType: "bool",
                name: "",
                type: "bool",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: true,
        inputs: [],
        name: "titleEscrowFactory",
        outputs: [
            {
                internalType: "contract ITitleEscrowCreator",
                name: "",
                type: "address",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: true,
        inputs: [],
        name: "tokenRegistry",
        outputs: [
            {
                internalType: "contract ERC721",
                name: "",
                type: "address",
            },
        ],
        payable: false,
        stateMutability: "view",
        type: "function",
    },
    {
        constant: false,
        inputs: [
            {
                internalType: "address",
                name: "operator",
                type: "address",
            },
            {
                internalType: "address",
                name: "from",
                type: "address",
            },
            {
                internalType: "uint256",
                name: "tokenId",
                type: "uint256",
            },
            {
                internalType: "bytes",
                name: "data",
                type: "bytes",
            },
        ],
        name: "onERC721Received",
        outputs: [
            {
                internalType: "bytes4",
                name: "",
                type: "bytes4",
            },
        ],
        payable: false,
        stateMutability: "nonpayable",
        type: "function",
    },
    {
        constant: false,
        inputs: [
            {
                internalType: "address",
                name: "newHolder",
                type: "address",
            },
        ],
        name: "changeHolder",
        outputs: [],
        payable: false,
        stateMutability: "nonpayable",
        type: "function",
    },
    {
        constant: false,
        inputs: [
            {
                internalType: "address",
                name: "newOwner",
                type: "address",
            },
        ],
        name: "approveNewOwner",
        outputs: [],
        payable: false,
        stateMutability: "nonpayable",
        type: "function",
    },
    {
        constant: false,
        inputs: [
            {
                internalType: "address",
                name: "newOwner",
                type: "address",
            },
        ],
        name: "transferTo",
        outputs: [],
        payable: false,
        stateMutability: "nonpayable",
        type: "function",
    },
    {
        constant: false,
        inputs: [
            {
                internalType: "address",
                name: "newBeneficiary",
                type: "address",
            },
            {
                internalType: "address",
                name: "newHolder",
                type: "address",
            },
        ],
        name: "transferToNewEscrow",
        outputs: [],
        payable: false,
        stateMutability: "nonpayable",
        type: "function",
    },
    {
        constant: false,
        inputs: [
            {
                internalType: "address",
                name: "newBeneficiary",
                type: "address",
            },
            {
                internalType: "address",
                name: "newHolder",
                type: "address",
            },
        ],
        name: "approveNewTransferTargets",
        outputs: [],
        payable: false,
        stateMutability: "nonpayable",
        type: "function",
    },
];


module.exports.TITLE_ESCROW_BIN = "0x60806040526003805460ff1916905534801561001a57600080fd5b5060405161172e38038061172e8339818101604052608081101561003d57600080fd5b5080516020820151604080840151606090940151600080546001600160a01b038086166001600160a01b031992831617835560018054918916919092168117909155925194959394919284929091907f076c2af751a37d3871addf9a6fdedbaf3827fb030bf1d04c43a1421420fcc987908290a3506100cb6301ffc9a760e01b6001600160e01b0361012316565b60038054610100600160a81b0319166101006001600160a01b038781169190910291909117909155600580546001600160a01b03191691831691909117905561011a63dcce221160e01b610123565b505050506101a7565b6001600160e01b03198082161415610182576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b611578806101b66000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806338af3eed11610097578063a03fa7e311610066578063a03fa7e3146102f3578063d4b5661014610319578063e366ab3014610321578063e534155d1461034f57610100565b806338af3eed1461028f5780635a87db751461029757806374bbb350146102bd5780639d23c4c7146102eb57610100565b80631fe2b08a116100d35780631fe2b08a14610239578063200d2ed214610241578063248225141461026d578063325689f91461028757610100565b806301ffc9a71461010557806303f0736d146101405780630cb258b714610168578063150b7a021461018c575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b031916610357565b604080519115158252519081900360200190f35b6101666004803603602081101561015657600080fd5b50356001600160a01b0316610376565b005b610170610568565b604080516001600160a01b039092168252519081900360200190f35b61021c600480360360808110156101a257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156101dd57600080fd5b8201836020820111156101ef57600080fd5b8035906020019184600183028401116401000000008311171561021157600080fd5b509092509050610577565b604080516001600160e01b03199092168252519081900360200190f35b6101706106a1565b6102496106b0565b6040518082600281111561025957fe5b60ff16815260200191505060405180910390f35b6102756106b9565b60408051918252519081900360200190f35b6101706106bf565b6101706106ce565b610166600480360360208110156102ad57600080fd5b50356001600160a01b03166106dd565b610166600480360360408110156102d357600080fd5b506001600160a01b038135811691602001351661087d565b610170610bf5565b6101666004803603602081101561030957600080fd5b50356001600160a01b0316610c09565b610170610e54565b6101666004803603604081101561033757600080fd5b506001600160a01b0381358116916020013516610e63565b6101706110ef565b6001600160e01b03191660009081526002602052604090205460ff1690565b6004546103b45760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff1660028111156103c757fe5b146104035760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b15801561045657600080fd5b505afa15801561046a573d6000803e3d6000fd5b505050506040513d602081101561048057600080fd5b50516001600160a01b0316146104c75760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b6104cf6110fe565b61050a5760405162461bcd60e51b81526004018080602001828103825260428152602001806114596042913960600191505060405180910390fd5b600080546004546040516001600160a01b03808616949316927fd728b6f1bea0a163413b81fbf7301d4a193de3b5565105255108cdec8b2acddb91a4600880546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031681565b60008060035460ff16600281111561058b57fe5b146105c75760405162461bcd60e51b815260040180806020018281038252602a81526020018061151a602a913960400191505060405180910390fd5b60035461010090046001600160a01b03166105e0611122565b6001600160a01b0316146106255760405162461bcd60e51b81526004018080602001828103825260478152602001806114d36047913960600191505060405180910390fd5b6004849055836001600160a01b03861661063d611122565b6001600160a01b03167f01fcbb5289f65a5306cb0d0c6a79f53f0c1c0b245a042e3565e30c0e6104e24060405160405180910390a46003805460ff1916600117905560405180602f6112a9823960405190819003602f019020979650505050505050565b6008546001600160a01b031681565b60035460ff1681565b60045481565b6005546001600160a01b031681565b6000546001600160a01b031681565b60045461071b5760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff16600281111561072e57fe5b1461076a5760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d60208110156107e757600080fd5b50516001600160a01b03161461082e5760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b610836611126565b6108715760405162461bcd60e51b815260040180806020018281038252603381526020018061135c6033913960400191505060405180910390fd5b61087a8161113d565b50565b6004546108bb5760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff1660028111156108ce57fe5b1461090a5760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b15801561095d57600080fd5b505afa158015610971573d6000803e3d6000fd5b505050506040513d602081101561098757600080fd5b50516001600160a01b0316146109ce5760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b6109d6611126565b610a115760405162461bcd60e51b815260040180806020018281038252603381526020018061135c6033913960400191505060405180910390fd5b81816001600160a01b038216610a585760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b6001600160a01b038116610a9d5760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b6000546001546001600160a01b03908116911614610b4d576006546001600160a01b03838116911614610b015760405162461bcd60e51b815260040180806020018281038252603d8152602001806113b2603d913960400191505060405180910390fd5b6007546001600160a01b03828116911614610b4d5760405162461bcd60e51b815260040180806020018281038252603881526020018061149b6038913960400191505060405180910390fd5b6005546003546040805163fcd7c1df60e01b81526101009092046001600160a01b039081166004840152878116602484015286811660448401529051600093919091169163fcd7c1df91606480830192602092919082900301818787803b158015610bb757600080fd5b505af1158015610bcb573d6000803e3d6000fd5b505050506040513d6020811015610be157600080fd5b50519050610bee816111de565b5050505050565b60035461010090046001600160a01b031681565b600454610c475760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff166002811115610c5a57fe5b14610c965760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b158015610ce957600080fd5b505afa158015610cfd573d6000803e3d6000fd5b505050506040513d6020811015610d1357600080fd5b50516001600160a01b031614610d5a5760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b610d62611126565b610d9d5760405162461bcd60e51b815260040180806020018281038252603381526020018061135c6033913960400191505060405180910390fd5b806001600160a01b038116610de35760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b6000546001546001600160a01b03908116911614610e47576008546001600160a01b03828116911614610e475760405162461bcd60e51b815260040180806020018281038252603b8152602001806113ef603b913960400191505060405180910390fd5b610e50826111de565b5050565b6006546001600160a01b031681565b610e6b6110fe565b610ea65760405162461bcd60e51b81526004018080602001828103825260428152602001806114596042913960600191505060405180910390fd5b600454610ee45760405162461bcd60e51b815260040180806020018281038252602c815260200180611301602c913960400191505060405180910390fd5b600160035460ff166002811115610ef757fe5b14610f335760405162461bcd60e51b815260040180806020018281038252602381526020018061138f6023913960400191505060405180910390fd5b60035460048054604080516331a9108f60e11b81529283019190915251309261010090046001600160a01b031691636352211e916024808301926020929190829003018186803b158015610f8657600080fd5b505afa158015610f9a573d6000803e3d6000fd5b505050506040513d6020811015610fb057600080fd5b50516001600160a01b031614610ff75760405162461bcd60e51b815260040180806020018281038252602f81526020018061132d602f913960400191505060405180910390fd5b6001600160a01b03821661103c5760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b6001600160a01b0381166110815760405162461bcd60e51b815260040180806020018281038252602f81526020018061142a602f913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03167f69e959981ba8324fe4ac2cc8441dfcac87573494c77536baaf7acee6c51b7b6d60405160405180910390a3600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6001546001600160a01b031681565b600080546001600160a01b0316611113611122565b6001600160a01b031614905090565b3390565b6001546000906001600160a01b0316611113611122565b6001600160a01b0381166111825760405162461bcd60e51b81526004018080602001828103825260298152602001806112d86029913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f076c2af751a37d3871addf9a6fdedbaf3827fb030bf1d04c43a1421420fcc98790600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003805460ff19166002179081905560045460405190916001600160a01b038481169261010090920416907fcf31cbde15ae9b0bfff5442830acd2764cad8da3394f189aa10c5a932e5b295590600090a46003546004805460408051632142170760e11b815230938101939093526001600160a01b03858116602485015260448401929092525161010090930416916342842e0e9160648082019260009290919082900301818387803b15801561129457600080fd5b505af1158015610bee573d6000803e3d6000fdfe6f6e455243373231526563656976656428616464726573732c616464726573732c75696e743235362c627974657329486173486f6c6465723a206e657720686f6c64657220697320746865207a65726f20616464726573735469746c65457363726f773a20436f6e7472616374206973206e6f7420686f6c64696e67206120746f6b656e5469746c65457363726f773a20436f6e7472616374206973206e6f7420746865206f776e6572206f6620746f6b656e486173486f6c6465723a206f6e6c792074686520686f6c646572206d617920696e766f6b6520746869732066756e6374696f6e5469746c65457363726f773a20436f6e7472616374206973206e6f7420696e207573655469746c65457363726f773a2042656e656669636961727920686173206e6f74206265656e20656e646f727365642062792062656e65666963696172795469746c65457363726f773a204e6577206f776e657220686173206e6f74206265656e20617070726f7665642062792062656e65666963696172795469746c65457363726f773a205472616e7366657272696e6720746f20307830206973206e6f7420616c6c6f7765644861734e616d656442656e65666963696172793a206f6e6c79207468652062656e6566696369617279206d617920696e766f6b6520746869732066756e6374696f6e5469746c65457363726f773a20486f6c64657220686173206e6f74206265656e20656e646f727365642062792062656e65666963696172795469746c65457363726f773a204f6e6c7920746f6b656e732066726f6d20707265646566696e656420746f6b656e2072656769737472792063616e2062652061636365707465645469746c65457363726f773a20436f6e747261637420686173206265656e2075736564206265666f7265a265627a7a723158206070f7c384fb31f8f87b3d5016a19b0b3eceedcbf17170e26d5898c072c0689464736f6c63430005100032";